/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package exercicio1_qualidade_imc;

import java.math.BigDecimal;

/**
 *
 * @author Thalyta
 */
public class MetodoIMCInfantil {

    private Double imc = 0.0;
    private String condicao = null;

    public void fazerCalculo(Double peso, Double altura) {
         Double pAltura, pPeso;
        if (peso == 0) {
            throw new RuntimeException("Falha: O peso deve ser um número maior que zero");
        }
        if(peso < 0) {
            throw new RuntimeException("Falha: O peso deve ser um número maior que zero");
        }
        if(altura < 0) {
            throw new RuntimeException("Falha: A altura deve ser um número maior que zero e menor que 3m");
        }
        if(altura > 3) {
            throw new RuntimeException("Falha: A altura deve ser um número maior que zero e menor que 3m");
        }
        if(altura == 0) {
            throw new RuntimeException("Falha: A altura deve ser um número maior que zero e menor que 3m");
        }
        
      
      
        pAltura = altura;
        pPeso = peso;
        
        if(pAltura.isNaN()) {
            throw new RuntimeException("Falha: A altura deve ser um número maior que zero e menor que 3m");
        }
        if(pPeso.isNaN()) {
            throw new RuntimeException("Falha: O peso deve ser um número maior que zero");
        }
        this.imc = (peso / (altura * altura));
        BigDecimal teste = new BigDecimal(imc); 
        teste = teste.setScale(4, BigDecimal.ROUND_HALF_UP); 
        this.imc = teste.doubleValue();
    
    }

    public void classificar(int idade, char sexo) {
        
        if(idade == 0) {
            throw new RuntimeException("Falha: A idade deve ser um número maior que seis e menor que 17");
        }
         if(idade < 0) {
            throw new RuntimeException("Falha: A idade deve ser um número maior que seis e menor que 17");
        }
        
        if(idade < 6) {
            throw new RuntimeException("Falha: A idade deve ser um número maior que seis e menor que 17");
        }
        if(idade > 16) {
            throw new RuntimeException("Falha: A idade deve ser um número maior que seis e menor que 17");
        }
        
        if (sexo == 'M') {

            if (idade == 6) {
                if (imc < 14.5) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 14.5 && imc <= 16.6) {
                    condicao = "No Peso Normal";
                } else if (imc > 16.6 && imc <= 18.0) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 18.0) {
                    condicao = "Obeso";
                }
            }
            if (idade == 7) {
                if (imc < 15.0) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 15.0 && imc <= 17.3) {
                    condicao = "No Peso Normal";
                } else if (imc > 17.3 && imc <= 19.1) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 19.1) {
                    condicao = "Obeso";
                }
            }
            if (idade == 8) {
                if (imc < 15.6) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 15.6 && imc <= 16.7) {
                    condicao = "No Peso Normal";
                } else if (imc > 16.7 && imc <= 20.3) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 20.3) {
                    condicao = "Obeso";
                }
            }
            if (idade == 9) {
                if (imc < 16.1) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 16.1 && imc <= 18.8) {
                    condicao = "No Peso Normal";
                } else if (imc > 18.8 && imc <= 21.4) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 21.4) {
                    condicao = "Obeso";
                }
            }
            if (idade == 10) {
                if (imc < 16.7) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 16.7 && imc <= 19.6) {
                    condicao = "No Peso Normal";
                } else if (imc > 19.6 && imc <= 22.5) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 22.5) {
                    condicao = "Obeso";
                }
            }
            if (idade == 11) {
                if (imc < 17.2) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 17.2 && imc <= 20.3) {
                    condicao = "No Peso Normal";
                } else if (imc > 20.3 && imc <= 23.7) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 23.7) {
                    condicao = "Obeso";
                }
            }
            if (idade == 12) {
                if (imc < 17.8) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 17.8 && imc <= 21.1) {
                    condicao = "No Peso Normal";
                } else if (imc > 21.1 && imc < 24.8) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc >= 24.8) {
                    condicao = "Obeso";
                }
            }
            if (idade == 13) {
                if (imc < 18.5) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 18.5 && imc <= 21.9) {
                    condicao = "No Peso Normal";
                } else if (imc > 21.9 && imc <= 25.9) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 25.9) {
                    condicao = "Obeso";
                }
            }
            if (idade == 14) {
                if (imc < 19.2) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 19.2 && imc <= 22.7) {
                    condicao = "No Peso Normal";
                } else if (imc > 22.7 && imc <= 26.9) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 26.9) {
                    condicao = "Obeso";
                }
            }
            if (idade == 15) {
                if (imc < 19.9) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 19.9 && imc <= 23.6) {
                    condicao = "No Peso Normal";
                } else if (imc > 23.6 && imc <= 27.7) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 27.7) {
                    condicao = "Obeso";
                }
            }

        } else {
            if (idade == 6) {
                if (imc < 14.3) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 14.3 && imc <= 16.1) {
                    condicao = "No Peso Normal";
                } else if (imc > 16.1 && imc <= 17.4) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 17.4) {
                    condicao = "Obeso";
                }
            }
            if (idade == 7) {
                if (imc < 14.9) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 14.9 && imc <= 17.1) {
                    condicao = "No Peso Normal";
                } else if (imc > 17.1 && imc <= 18.9) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 18.9) {
                    condicao = "Obeso";
                }
            }
            if (idade == 8) {
                if (imc < 15.6) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 15.6 && imc <= 18.1) {
                    condicao = "No Peso Normal";
                } else if (imc > 18.1 && imc <= 20.3) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 20.3) {
                    
                    
                    condicao = "Obeso";
                }
            }
            if (idade == 9) {
                if (imc < 16.3) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 16.3 && imc <= 19.1) {
                    condicao = "No Peso Normal";
                } else if (imc > 19.1 && imc <= 21.7) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 21.7) {
                    condicao = "Obeso";
                }
            }
            if (idade == 10) {
                if (imc < 17.0) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 17.0 && imc <= 20.1) {
                    condicao = "No Peso Normal";
                } else if (imc > 20.1 && imc <= 23.2) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 23.2) {
                    condicao = "Obeso";
                }
            }
            if (idade == 11) {
                if (imc < 17.6) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 17.6 && imc <= 21.1) {
                    condicao = "No Peso Normal";
                } else if (imc > 21.1 && imc <= 24.5) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 24.5) {
                    condicao = "Obeso";
                }
            }
            if (idade == 12) {
                if (imc < 18.3) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 18.3 && imc <= 22.1) {
                    condicao = "No Peso Normal";
                } else if (imc > 22.1 && imc <= 25.9) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 25.9) {
                    condicao = "Obeso";
                }
            }
            if (idade == 13) {
                if (imc < 18.9) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 18.9 && imc <= 23.0) {
                    condicao = "No Peso Normal";
                } else if (imc > 23.0 && imc <= 27.7) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 27.7) {
                    condicao = "Obeso";
                }
            }
            if (idade == 14) {
                if (imc < 19.3) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 19.3 && imc <= 23.8) {
                    condicao = "No Peso Normal";
                } else if (imc > 23.8 && imc <= 27.9) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 27.9) {
                    condicao = "Obeso";
                }
            }
            if (idade == 15) {
                if (imc < 19.6) {
                    condicao = "Abaixo do peso";
                } else if (imc >= 19.6 && imc <= 24.2) {
                    condicao = "No Peso Normal";
                } else if (imc > 24.2 && imc <= 28.8) {
                    condicao = "Marginalmente Acima do Peso";
                } else if (imc > 28.8) {
                    condicao = "Obeso";
                }
            }
        }
    }

    public Double getImc() {
        return imc;
    }

    public String getCondicao() {
        return condicao;
    }

}
